
#ifndef __WxPointedSticksMapper2D_h
#define __WxPointedSticksMapper2D_h

#include "WxExtentionExports.h"
#include "mitkCommon.h"

#include <mitkGLMapper2D.h>
#include <mitkSurface.h>


namespace mitk {

class BaseRenderer;
class Geometry2D;
class DisplayGeometry;


class WxExtention_EXPORT WxPointedSticksMapper2D : public GLMapper2D
{
public:
  mitkClassMacro(WxPointedSticksMapper2D, GLMapper2D);

  itkNewMacro(Self);

  const Surface* GetInput(void);

  virtual void Paint(BaseRenderer* renderer);

  /**
   * @brief The Surface to map can be explicitly set by this method.
   *
   * If it is set, it is used instead of the data stored in the DataNode.
   * This enables to use the mapper also internally from other mappers.
   */
  itkSetConstObjectMacro(Surface, Surface);

  /**
   * @brief Get the Surface set explicitly.
   *
   * @return NULL is returned if no Surface is set to be used instead of DataNode::GetData().
   * @sa SetSurface
   */
  itkGetConstObjectMacro(Surface, Surface);

  /**
   *\brief Overwritten to initialize lookup table for point scalar data
   */
  void SetDataNode( DataNode::Pointer node );

  /**
   * \brief Generate OpenGL primitives for the VTK contour held in contour.
   */

  static void SetDefaultProperties(DataNode* node, BaseRenderer* renderer = NULL, bool overwrite = false);

  virtual void ApplyProperties(BaseRenderer* renderer);

protected:

  WxPointedSticksMapper2D();

  virtual ~WxPointedSticksMapper2D();

  Surface::ConstPointer m_Surface;

};

} // namespace mitk
#endif
